1 using UnityEngine;
2
3 namespace ProceduralToolkit.Examples
4 {
5 public static class Armrests
6 {
7 public static MeshDraft Armrests0(float seatWidth, float seatDepth, Vector3 backCenter, float backHeight,
8 float legWidth)
9 {
10 var draft = new MeshDraft();
11 float armrestHeight = RandomE.Range(backHeight/4, backHeight*3/4, 3);
12 float armrestLength = seatDepth - legWidth;
13
14 Vector3 corner = backCenter + Vector3.left*(seatWidth/2 - legWidth/2) + Vector3.back*legWidth/2;
15
16 float offset = 0;
17 if (RandomE.Chance(0.5f))
18 {
19 offset = RandomE.Range(legWidth/2, legWidth, 2);
20 }
21 Vector3 v0 = corner + Vector3.back*(armrestLength - legWidth/2);
22 Vector3 v1 = v0 + Vector3.up*(armrestHeight - legWidth/2);
23 Vector3 v2 = corner + Vector3.up*armrestHeight;
24 Vector3 v3 = v2 + Vector3.back*(armrestLength + offset);
25
26 var armrest = ChairGenerator.BeamDraft(v0, v1, legWidth);
27 armrest.Add(ChairGenerator.BeamDraft(v2, v3, legWidth));
28 draft.Add(armrest);
29 armrest.Move(Vector3.right*(seatWidth - legWidth));
30 draft.Add(armrest);
31 return draft;
32 }
33
34 public static MeshDraft Armrests1(float seatWidth, float seatDepth, Vector3 backCenter, float backHeight,
35 float legWidth)
36 {
37 var draft = new MeshDraft();
38 float armrestHeight = RandomE.Range(backHeight/4, backHeight*3/4, 3);
39 float armrestLength = RandomE.Range(seatDepth*3/4, seatDepth, 2);
40 legWidth = RandomE.Range(legWidth*3/4, legWidth, 2);
41
42 Vector3 corner = backCenter + Vector3.left*(seatWidth/2 + legWidth/2) +
43 Vector3.forward*legWidth/2;
44
45 float offset = 0;
46 if (RandomE.Chance(0.5f))
47 {
48 offset = RandomE.Range(armrestLength/4, armrestLength/2, 2) - legWidth/2;
49 }
50 Vector3 v0 = corner + Vector3.back*(armrestLength - legWidth/2 - offset) + Vector3.down*legWidth;
51 Vector3 v1 = v0 + Vector3.up*(armrestHeight + legWidth/2);
52 Vector3 v2 = corner + Vector3.up*armrestHeight;
53 Vector3 v3 = v2 + Vector3.back*armrestLength;
54
55 var armrest = ChairGenerator.BeamDraft(v0, v1, legWidth);
56 armrest.Add(ChairGenerator.BeamDraft(v2, v3, legWidth));
57 draft.Add(armrest);
58 armrest.Move(Vector3.right*(seatWidth + legWidth));
59 draft.Add(armrest);
60 return draft;
61 }
62 }
63 }